Completed
Push — master ( 34f5de...9cf608 )
by greg
45s
created

describe(ꞌUser.operationsꞌ)   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 27
rs 8.8571
c 1
b 0
f 0
1
var chai = require('chai');
2
var sinonChai = require('sinon-chai')
3
var expect = chai.expect
4
chai.use(sinonChai)
5
var sinon = require('sinon');
6
var fs = require('fs-extra');
7
var mkdirp = require('mkdirp');
8
var path = require('path');
9
var bcrypt = require('bcrypt-nodejs');
10
var Cookies = require('cookies');
11
var jwt = require('jwt-simple');
12
var Handlebars =require('../../src/cli').Handlebars
13
14
var coreUtils = require('../../src/cli').coreUtils
15
var config = require('../../src/cli').config
16
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})
17
18
var User = require('../../src/cli').User;
19
20
describe('User.operations', function() {
21
  before( function() {
22
    config.users.enable = true
23
    this.fixture = {
24
      htmlIsAuthorized: fs.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'templates', 'isAuthorized.html'), 'utf8'),
25
      htmlIsAuthorizedTrue: fs.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'templates', 'isAuthorizedTrue.html'), 'utf8'),
26
      users: JSON.parse(fs.readFileSync(path.join(process.cwd(), 'test', 'fixtures', 'users', 'users.json'), 'utf8'))
27
    }
28
  });
29
30
  it('User.operations.deactivate', function(){
31
    // stub
32
    var sinonInstance = sinon.sandbox.create();
33
    var stub = sinonInstance.stub(User.manager.instance, 'get');
34
    stub.returns(JSON.parse(JSON.stringify(this.fixture.users)))
35
    var stubSave = sinonInstance.stub(User.manager.instance, 'save');
36
    stubSave.returns(null)
37
38
    // test
39
    var bdd = User.operations.deactivate(1)
40
    chai.expect(bdd[0].actif).to.equal(0)
41
42
    // unstub
43
    sinon.assert.calledOnce(User.manager.instance.get)
44
    User.manager.instance.get.restore()
45
    sinon.assert.calledOnce(User.manager.instance.save)
46
    User.manager.instance.save.restore()
47
  })
48
49
  it('User.operations.activate', function(){
50
    // stub
51
    var sinonInstance = sinon.sandbox.create();
52
    var stub = sinonInstance.stub(User.manager.instance, 'get');
53
    stub.returns(JSON.parse(JSON.stringify(this.fixture.users)))
54
    var stubSave = sinonInstance.stub(User.manager.instance, 'save');
55
    stubSave.returns(null)
56
57
    // test
58
    var bdd = User.operations.activate(1)
59
    chai.expect(bdd[0].actif).to.equal(1)
60
61
    // unstub
62
    sinon.assert.calledOnce(User.manager.instance.get)
63
    User.manager.instance.get.restore()
64
    sinon.assert.calledOnce(User.manager.instance.save)
65
    User.manager.instance.save.restore()
66
  })
67
68
  it('User.operations.remove', function(){
69
    // stub
70
    var sinonInstance = sinon.sandbox.create();
71
    var stub = sinonInstance.stub(User.manager.instance, 'get');
72
    stub.returns(JSON.parse(JSON.stringify(this.fixture.users)))
73
    var stubSave = sinonInstance.stub(User.manager.instance, 'save');
74
    stubSave.returns(null)
75
76
    // test
77
    var bdd = User.operations.remove(1)
78
    chai.expect(bdd.length).to.equal(0)
79
80
    // unstub
81
    sinon.assert.calledOnce(User.manager.instance.get)
82
    User.manager.instance.get.restore()
83
    sinon.assert.calledOnce(User.manager.instance.save)
84
    User.manager.instance.save.restore()
85
  })
86
87
  it('User.operations.update', function(){
88
    // stub
89
    var sinonInstance = sinon.sandbox.create();
90
    var stubTextXss = sinonInstance.stub(coreUtils.text, 'checkXss');
91
    stubTextXss.returns({ success:1 });
92
    var stubCheckSameEmail = sinonInstance.stub(User.utils, 'checkSameEmail');
93
    stubCheckSameEmail.returns({ success:1 });
94
    var stubGetRole = sinonInstance.stub(User.utils, 'getRole');
95
    stubGetRole.returns(JSON.parse(JSON.stringify(this.fixture.users))[0].role);
96
    var stubGet = sinonInstance.stub(User.manager.instance, 'get');
97
    stubGet.returns(JSON.parse(JSON.stringify(this.fixture.users)))
98
    var stubSave = sinonInstance.stub(User.manager.instance, 'save');
99
    stubSave.returns(null)
100
101
    // test
102
    var bdd = User.operations.update({id: 2})
103
    chai.expect(bdd.user.id).to.be.equal(2)
104
105
    // unstub
106
    sinon.assert.calledOnce(coreUtils.text.checkXss)
107
    coreUtils.text.checkXss.restore()
108
    sinon.assert.calledOnce(User.utils.checkSameEmail)
109
    User.utils.checkSameEmail.restore()
110
    sinon.assert.calledOnce(User.utils.getRole)
111
    User.utils.getRole.restore()
112
    sinon.assert.calledOnce(User.manager.instance.get)
113
    User.manager.instance.get.restore()
114
    sinon.assert.calledOnce(User.manager.instance.save)
115
    User.manager.instance.save.restore()
116
  })
117
118
  it('User.operations.updatePassword', function(){
119
    // stub
120
    var sinonInstance = sinon.sandbox.create();
121
    var stubCommonPassword = sinonInstance.stub(User.utils, 'commonPassword');
122
    stubCommonPassword.returns({ success:1 });
123
    var stubEncryptPassword = sinonInstance.stub(User.utils, 'encryptPassword');
124
    stubEncryptPassword.returns("newPassword2");
125
    var stubGet = sinonInstance.stub(User.manager.instance, 'get');
126
    stubGet.returns(JSON.parse(JSON.stringify(this.fixture.users)))
127
    var stubSave = sinonInstance.stub(User.manager.instance, 'save');
128
    stubSave.returns(null)
129
130
    // test
131
    var oldPassword = JSON.parse(JSON.stringify(this.fixture.users)).password
132
    var bdd = User.operations.updatePassword(JSON.parse(JSON.stringify(this.fixture.users))[0], "newPassword")
133
    chai.expect(bdd.user.password).to.not.be.equal(oldPassword)
134
135
    // unstub
136
    sinon.assert.calledOnce(User.utils.commonPassword)
137
    User.utils.commonPassword.restore()
138
    sinon.assert.calledOnce(User.utils.encryptPassword)
139
    User.utils.encryptPassword.restore()
140
    sinon.assert.calledOnce(User.manager.instance.get)
141
    User.manager.instance.get.restore()
142
    sinon.assert.calledOnce(User.manager.instance.save)
143
    User.manager.instance.save.restore()
144
  })
145
146
  it('User.operations.add', function(){
147
    // stub
148
    var sinonInstance = sinon.sandbox.create();
149
    var stubTextXss = sinonInstance.stub(coreUtils.text, 'checkXss');
150
    stubTextXss.returns({ success:1 });
151
    var stubCheckSameEmail = sinonInstance.stub(User.utils, 'checkSameEmail');
152
    stubCheckSameEmail.returns({ success:1 });
153
    var stubCommonPassword = sinonInstance.stub(User.utils, 'commonPassword');
154
    stubCommonPassword.returns({ success:1 });
155
    var stubEncryptPassword = sinonInstance.stub(User.utils, 'encryptPassword');
156
    stubEncryptPassword.returns("newPassword2");
157
    var stubGetRole = sinonInstance.stub(User.utils, 'getRole');
158
    stubGetRole.returns(JSON.parse(JSON.stringify(this.fixture.users))[0].role);
159
    var stubGet = sinonInstance.stub(User.manager.instance, 'get');
160
    stubGet.returns(JSON.parse(JSON.stringify(this.fixture.users)))
161
    var stubSave = sinonInstance.stub(User.manager.instance, 'save');
162
    stubSave.returns(null)
163
    
164
    // test
165
    var res = User.operations.add(JSON.parse(JSON.stringify(this.fixture.users))[0])
166
    chai.expect(res.success).to.be.equal(1)
167
168
    // unstub
169
    sinon.assert.calledOnce(coreUtils.text.checkXss)
170
    coreUtils.text.checkXss.restore()
171
    sinon.assert.calledOnce(User.utils.checkSameEmail)
172
    User.utils.checkSameEmail.restore()
173
    sinon.assert.calledOnce(User.utils.commonPassword)
174
    User.utils.commonPassword.restore()
175
    sinon.assert.calledOnce(User.utils.encryptPassword)
176
    User.utils.encryptPassword.restore()
177
    sinon.assert.calledOnce(User.utils.getRole)
178
    User.utils.getRole.restore()
179
    sinon.assert.calledOnce(User.manager.instance.get)
180
    User.manager.instance.get.restore()
181
    sinon.assert.calledOnce(User.manager.instance.save)
182
    User.manager.instance.save.restore()
183
  })
184
});